Skip to content

[#620] Update Node runtime for October security fixes - #621

Merged
DVidal1205 merged 2 commits into
mainfrom
update-vulernerability
Oct 22, 2026
Merged

DVidal1205 merged 2 commits into
mainfrom
update-vulernerability

Conversation

@Adr1an04

Copy link
Copy Markdown
Contributor

Why

Forge's development/CI pin used EOL Node 25.6.1, its engine range admitted obsolete runtimes, and Docker builds used floating Node 24 tags. Align them with Node 24.22.1, which includes the October 21 security fixes.

What

Closes: #620

  • Pin .nvmrc and all 18 Node stages across 13 Dockerfiles to 24.22.1; restrict root engines to patched 24.x releases.
  • Keep Debian bookworm-slim, pnpm, dependencies, lockfile, and application code unchanged. CI already reads .nvmrc.
  • Update contributor documentation and the feature validation bundle.

Test Plan

Completed locally under checksum-verified Node 24.22.1, with Turbo cache bypassed:

  • pnpm format: passed, 24 tasks.
  • pnpm lint: passed, 31 tasks; existing warnings, no errors.
  • pnpm typecheck: passed, 33 tasks.
  • pnpm build: passed, 21 tasks, with checked-in example environment values and one task at a time.
  • Native OR-Tools solver tests: 10 passed; Sharp PNG encode/decode passed.
  • Local DNS regression: 24.21.0 sent queries for embedded/trailing NUL hostnames; 24.22.1 rejected both before querying. Valid DNS and Brotli round trips passed on macOS and Linux arm64/amd64.
  • Docker tools image built and reported Node 24.22.1, pnpm 9.12.1, and Turbo 2.8.11. Independent runtime-reference review and git diff --check passed.

Full application Docker image builds were not completed. Production was not accessed: after merge, rebuild/redeploy Coolify resources and verify Node 24.22.1 in the Node runners. Local engines checks remain advisory. Other upstream CVEs were not individually reproduced.

Dependency remediation is explicitly excluded: the supplementary audit still reports 6 critical and 69 high counts, documented separately. No UI changes; screenshots are not applicable.

Checklist

  • Database: No schema changes.
  • Environment Variables: No environment variables changed.

@Adr1an04
Adr1an04 requested a review from a team as a code owner October 22, 2026 04:20
@Adr1an04 Adr1an04 added Bug Something isn't working Minor Small change - 1 reviewer required Global Change modifies code for the entire repository labels Oct 22, 2026
@Adr1an04 Adr1an04 self-assigned this Oct 22, 2026
@coderabbitai

coderabbitai Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

📝 Walkthrough

The change sets Node.js 24.22.1 as the repository runtime baseline. It updates the root engine range, .nvmrc, contributor guidance, and Node-based Docker image tags. Added specification, test-case, and status documents describe verification and production rollout requirements. The status report records completed checks and outstanding rollout verification. The integration test now tracks and closes its database pool through the test support utility.

Priority: ⬆️ High

Severity of issue fixed: High

Merge Risk: 🔵 Low · up to ca164

Align the standalone Playwright contributor workflow with Node 24.22.1 before relying on the repository-wide runtime update.

Pre-merge checks: Passed 7 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Out of Scope Changes check Warning The change to packages/api/src/tests/integration/hackathon-portal-configuration.test.ts replaces direct pool shutdown with trackTestPoolShutdown. This test teardown change does not implement Node … Revert the unrelated changes in packages/api/src/tests/integration/hackathon-portal-configuration.test.ts, including the trackTestPoolShutdown import, closePool variable, setup call, and altered afterAll cleanup.
Passed Passed checks: 7 passed
Check name Status Explanation
Title check Passed The title starts with issue number [#620], describes the Node runtime security update, and is 53 characters long.
Description check Passed The description directly explains the Node runtime updates, affected files, validation results, and deployment follow-up.
Linked Issues check Passed Issue #620 requires Node 24.22.1 across development, CI, and Node Docker stages, updated setup documentation, and recorded validation. The PR updates .nvmrc, root engines, documentation, and all rep…
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1…
No Hardcoded Secrets Passed No changed line introduces a hardcoded API key, password, token, or secret. Dockerfile secret-related settings continue to reference ${FORGE_BUILD_PLACEHOLDER}. The test fixture token is unchanged f…
Validated Env Access Passed No new direct process.env usage was added. The only match in the changed files is the pre-existing process.env.DATABASE_URL assignment in `packages/api/src/tests/integration/hackathon-portal-confi…
No Typescript Escape Hatches Passed No TypeScript escape hatch was introduced. The only TypeScript change adds a typed pool-close callback and optional chaining; added lines contain no any, @ts-ignore, @ts-expect-error, or non-nul…
Full details: Linked Issues check

Explanation

Issue #620 requires Node 24.22.1 across development, CI, and Node Docker stages, updated setup documentation, and recorded validation. The PR updates .nvmrc, root engines, documentation, and all reported Node stages. The feature status records passing format, lint, typecheck, build, and focused native/runtime checks under Node 24.22.1. It also records the required production rebuild and redeploy follow-up. Dependency remediation remains excluded as required.

Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1 files.

Full details: No Hardcoded Secrets

Explanation

No changed line introduces a hardcoded API key, password, token, or secret. Dockerfile secret-related settings continue to reference ${FORGE_BUILD_PLACEHOLDER}. The test fixture token is unchanged from the base revision.

Full details: Validated Env Access

Explanation

No new direct process.env usage was added. The only match in the changed files is the pre-existing process.env.DATABASE_URL assignment in packages/api/src/tests/integration/hackathon-portal-configuration.test.ts; the PR only adds pool shutdown tracking around it.

Full details: No Typescript Escape Hatches

Explanation

No TypeScript escape hatch was introduced. The only TypeScript change adds a typed pool-close callback and optional chaining; added lines contain no any, @ts-ignore, @ts-expect-error, or non-null assertion.

Full details: Out of Scope Changes check

Explanation

The change to packages/api/src/tests/integration/hackathon-portal-configuration.test.ts replaces direct pool shutdown with trackTestPoolShutdown. This test teardown change does not implement Node runtime alignment, documentation, or validation for issue #620.

Resolution

Revert the unrelated changes in packages/api/src/tests/integration/hackathon-portal-configuration.test.ts, including the trackTestPoolShutdown import, closePool variable, setup call, and altered afterAll cleanup.

✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Warning

Some tools did not complete. Review the errors below.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

packages/api/src/tests/integration/hackathon-portal-configuration.test.ts

ESLint skipped: missing config or dependency (missing-dependency). The ESLint configuration references a package that is not available in the sandbox.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Wait for pooled connections to close before dropping the disposable database, using the existing shutdown tracker.

Co-authored-by: Codex <codex@openai.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to GitHub limitations.

⚠️ Outside diff range comments (1)

🟡 Minor · Align the Playwright skill with the Node 24.22.1 baseline. · package.json:7-9

.claude/skills/playwright-skill/package.json:7-9
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Align the Playwright skill with the Node 24.22.1 baseline.

The standalone skill is outside the root workspace, so the root engine constraint does not apply. Its documented npm run setup and node commands can run under Node 14. Change its engine range to the patched baseline.

Suggested fix
-    "node": ">=14.0.0"
+    "node": "^24.22.1"

ℹ️ Review info
⚙️ Run configuration
📥 Commits

Reviewing files that changed from the base of the PR and between b43e895 and ca1640c.

📒 Files selected for processing: 1
  • packages/api/src/tests/integration/hackathon-portal-configuration.test.ts

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

@DVidal1205
DVidal1205 merged commit 4f05801 into main Oct 22, 2026
14 checks passed
@DVidal1205
DVidal1205 deleted the update-vulernerability branch October 22, 2026 14:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Bug Something isn't working Global Change modifies code for the entire repository Minor Small change - 1 reviewer required

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update Node runtime for October security fixes

2 participants